package com.lincoln.cloud.servercenter.interfaces;

import com.lincoln.cloud.common.bean.ServerMessage;

import java.util.List;

/**
 * 服务器池,用来维护与服务器的连接,连接方式可以自定义
 *
 * @author lincoln
 */
public interface ServerPool {
    /**
     * 设置容器
     *
     * @param serverPoolContainer
     * @return
     */
    boolean setContainer(ServerPoolContainer serverPoolContainer);

    /**
     * 返回容器
     *
     * @return
     */
    ServerPoolContainer getContainer();

    /**
     * 生成一个id,此处要实现锁
     *
     * @return
     */
    int createId();

    /**
     * 通过id查询服务器
     *
     * @param id
     * @return
     */
    BaseServerInfo findById(int id);

    /**
     * 通过服务器名查询服务器
     *
     * @param name
     * @return
     */
    List<BaseServerInfo> findByName(String name);

    /**
     * 查询全部
     *
     * @return
     */
    List<BaseServerInfo> findAll();

    /**
     * 添加一个服务器
     *
     * @param serverInfo
     * @return
     */
    boolean addServer(BaseServerInfo serverInfo);

    /**
     * 通过id删除服务器,并断开
     *
     * @param id
     * @return
     */
    boolean deleteServer(int id);

    /**
     * 通过名字删除一组服务器,并断开
     *
     * @param name
     * @return
     */
    boolean deleteServer(String name);

    /**
     * 处理消费者发来的消息(给NttyServer回调)
     *
     * @param serverMessage
     */
    void dealServerMessage(ServerMessage serverMessage);

    /**
     * 给消费者发送的消息(调用NttyServer)
     * @param serverMessage
     * @return
     */
    boolean sendServerMessage(ServerMessage serverMessage);
}
